#ifndef _rand_h__
#define _rand_h__

namespace gecko
{

	// a predictable psuedo-random number generator 
	// - forms the core of the procedural generation system
	class RandomNumberGenerator
	{
	public:
		// construct with a seed
		RandomNumberGenerator(unsigned int seed);

		// generate a random number between [from] and [to]
		int Generate(int from, int to);

		// generates a random number between 0.0 and 1.0
		float GenerateNormalised();

		// get the current seed in use
		unsigned int GetSeed();

	private:
		static const unsigned int INITIAL_VALUE = 0x50000;
		static const unsigned int INCREMENT = 0xC39EC3;
		static const unsigned int MULTIPLIER = 0x43FD43FD;
		unsigned int m_rnd;
	};

}

#endif // #ifndef _rand_h__